package com.shuo.dsa.niuke;

import java.util.Arrays;
import java.util.Comparator;

/**
 * 输入一个正整数数组，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。
 * 例如输入数组{3，32，321}，则打印出这三个数字能排成的最小数字为321323
 *      思路: ab > ba, 依次思路作为比较器
 */
public class PrintMinNum {
    public String PrintMinNumber(int[] numbers) {
        Comparator<Integer> comparator = (int1, int2) -> {
            String o1 = String.valueOf(int1);
            String o2 = String.valueOf(int2);
            return Integer.valueOf(o1 + o2) - Integer.valueOf(o2 + o1);
        };
        Integer[] ints = new Integer[numbers.length];
        for (int i = 0; i < ints.length; i++) {
            ints[i] = numbers[i];
        }
        Arrays.sort(ints, comparator);
        StringBuilder str = new StringBuilder();
        for (Integer anInt : ints) {
            str.append(anInt);
        }
        return str.toString();
    }


}
